The use of software programs and computers for messaging, calendaring and collaborating is common today. For example, computer application programs exists that allow a user to send, receive and manage email messages, maintain personal or group calendars, schedule meetings with others, manage contacts, and maintain task lists. One example of such a program is OUTLOOK, manufactured by Microsoft Corporation of Redmond, Wash., although many other such programs are also available.
Application programs that allow messaging, calendaring and collaboration may reside and execute on a single computer as a stand alone program. Additionally, these application programs may act as a client to access information maintained by a much more advanced, server-based messaging, calendaring and collaboration application. One example of such an advanced program is Exchange 2000 Server, also manufactured by Microsoft Corporation. Using Exchange 2000 Server, for example, a plurality of users in a networked environment may maintain any number of individual or public email folders, calendars, task list, etc.
In a networked environment, a server based messaging, calendaring and collaboration program (e.g., Exchange 2000 Server) executes on a server which is networked to a plurality of personal computers running client programs (e.g., OUTLOOK). The clients can send and receive email, maintain calendars, maintain task lists, schedule meetings, etc. In such an implementation, the database containing the email(s), calendar(s), task list(s), etc. for each user may be maintained by the server, although the individual clients may have some control over the creation and management of the messages, management of the client mailbox, and so forth. The details of such an implementation are well known to those with ordinary skill in the art.
Generally, a program with calendaring capabilities allows two types of different appointments to be saved, modified or deleted. A first type of appointment is a single appointment with a single occurrence at a particular date and time. Such an appointment is comprised of a data structure that includes information about the appointment such as, but not necessarily limited to, a subject line, start and end times, date, and a note about the appointment. A second type of appointment is a recurring appointment. For example, a user may want to schedule a meeting on the first Monday of every month during the year. Instead of manually entering and saving twelve separate appointments, many calendaring programs allow a user to enter and save a single recurring appointment. The data structure associated with such an appointment includes all the information normally associated with a single appointment, as well as information about a recurrence pattern. The calendaring program, using the recurrence pattern, then computes and fills in the individual instances of the appointment. The manner in which the recurrence pattern is entered and used to expand the individual instances of the recurring appointment is well known to those with ordinary skill in the art. OUTLOOK and Exchange 2000 both allow a user to enter recurring appointments.
Messaging Application Program Interface (MAPI) defines a complete architecture for messaging applications. The architecture specifies several well-defined components known to those with ordinary skill in the art. The MAPI architecture can be used for email, scheduling, personal information managers, bulletin boards, and online services that run on mainframes, personal computers, and hand-held computing devices. On client computers, MAPI allows complete control over the messaging system, creation and management of messages, management of the client mailbox, service providers and so forth. The comprehensive architectural design allows MAPI to serve as the basis for a common information exchange. OUTLOOK and Exchange, for example, are programs that support MAPI.
Generally, a computer running a MAPI compliant client program has sufficient processing and memory resources to perform many of the tasks and computations associated with creation and management of the mailbox, calendar folder, messages, appointments, tasks, etc. A client program with access to sufficient processing and memory resources will herein be referred to as a thick client. When a client computer running a MAPI-compliant calendar program (e.g., OUTLOOK) accesses a server computer that maintains calendar information (e.g., Exchange 2000), the client computer receives from the server computer all of the data structures associated with a requested defined time period. If the requested defined time period (e.g., all calendar appointments for the month of March) includes one or more recurring appointments, the client computer calculates all of the instances of that appointment during the time period contemporaneous with the request. The individual instances of the recurring appointment are then displayed on an appropriate user interface. This process, however, does not involve delay that is typically noticeable to the user because the recurrence expansion calculations are usually performed by a desktop computer with its own processor and memory, and because none of the data (i.e., the data associated with the single appointments and the individual instances of the recurring appointments) are actually written to a hard disk.
It is also possible, however, to check email, calendaring and other information maintained by the server (e.g., Exchange 2000) using a client computer with relatively low processing and memory resources, i.e., a thin client. For example, a user may check email or calendar information remotely using a web browser running on a computer, or a portable device such a mobile phone or a handheld personal information manager (PIM). In such an implementation, the web browser (which would be the client), or cell phone or PIM would not have access to sufficient processing and memory resources to perform (or perform in a reasonable time) many of the more resource intensive tasks associated with managing messages, tasks, appointments, etc. (e.g., expanding a recurring appointment into the individual instances of the appointment).
Microsoft Corporation's Outlook Web Access, is a component of Exchange 2000 Server that allows users secure access to their email, calendar, group scheduling, and public folder information maintained by an Exchange 2000 Server through the internet using a web browser. Another example is a Mobile Information Server (also manufactured by Microsoft Corporation) which allows access to similar information via a cell phone or PIM. An example of a suitable web browser is Internet Explorer, version 5.0 or higher, manufactured by Microsoft Corporation. In these implementations, the client can display, add, modify or delete calendar information maintained by the server from any location using a wired or wireless Local Area Network or Wide Area Network.
The approach outlined above can cause significant delays for users that use both thick and thin clients to save, modify, delete or access appointment information on a server. For example, a user may make many additions to and/or modifications of recurring appointments using a thick client (e.g., using a desktop computer running OUTLOOK while at work). The individual instances of the recurring appointments will not be expanded and saved to disk at the time they were made. If the user then tries to access and view these recurring appointments using a thin client (e.g., via the internet using a web browser from home the next morning), all of the recurring appointments for the time period desired to be viewed will have to be expanded by the server at the time of the viewing because the thin client (e.g., the web browser) has limited processing and memory resources of its own. The server must compute the individual instances of the recurring appointment from the recurrence pattern and save the individual instances to a computer readable medium. These tasks are resource (e.g., processor and/or memory resources) and time intensive.
The expansion of recurring appointments at the time of the request could result in noticeable time delay from the time the request for calendar information is submitted by the thin client to the server, to the time that the information is displayed on the user interface of the thin client. This situation is made worse during peak hours when many users may be trying to access their calendar information from the server (for example, users trying to check their calendar from home in the morning before leaving for work). In fact, it is possible that in a worse case scenario, the client may time-out while waiting for the server to expand and save the recurring appointment data structures.